#ifndef MYQGRAPHICS_H
#define MYQGRAPHICS_H
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsPixmapItem>
#include <QGraphicsItem>
#include <QGraphicsSimpleTextItem>
#include <QGraphicsTextItem>
#include <QKeyEvent>
#include <QDebug>
#include <QColor>
#include <QMessageBox>
#include <QLabel>
#include <QTimer>
#include <QGridLayout>
#include <QVBoxLayout>
#include <cstring>
#include <math.h>
#include "player.h"
#include "data.h"


class MyQGraphicsView : public QGraphicsView
{
    Q_OBJECT
public:
    explicit MyQGraphicsView();
protected:
    void keyPressEvent(QKeyEvent *event) override;

};


class MyQGraphicsScene:public QGraphicsScene{
    Q_OBJECT
public:
    explicit MyQGraphicsScene();
    ~MyQGraphicsScene();
    QGraphicsPixmapItem* gameItem;
    /**
     * @brief 战斗图元
     */
    QGraphicsPixmapItem* battleItem;

    /**
     * @brief 玩家图元
     */
    QGraphicsPixmapItem* playerItem;

    /**
     * @brief 战斗场景
     */
    QGraphicsScene* battleScene;

    /**
     * @brief 战斗视图
     */
    QGraphicsView* battleView;

    /**
     * @brief 商店选择 0,0,0,0 3维坐标+选项
     */
    int choose[4];

    /**
     * @brief 商店增加属性
     */
    void addProp();


    /**
     * @brief 预测功能
     * @param 怪物
     * @return 打不过返回???打得过返回掉血生命值
     */
    QString forecast(const Monster* e);

    /**
     * @brief 战斗定时器
     */
    QTimer* timer;


    QWidget* qWidget;

    void  shopEvent(const int id);

    QStringList shopMsgList;

    /**
     * @brief 商店术语
     */
    QLabel* label1;

//    /**
//     * @brief 初始化战斗场景
//     */
//    void initBattleScene();

    QPixmap gameBgImg;
    QPixmap blankBgImg;
    QPixmap battleBgImg;
    Player* player;                          // 用于保存玩家属性数值
    void draw(double sec);
    //消息提示框
    void showInfo(const QString& msg);

    void drawBattle();
    /**
     * @brief 人物移动函数
     * @param x下一步的横坐标
     * @param y下一步的纵坐标
     */
    void interaction(const int x,const int y);
    QLabel qLabel;

    // 全局变量
    int GAME_PIX_54 = 54;
    int GAME_PIX_72 = 72;
    bool inConversation = false;   // 允许键盘交互
    bool talked = false;
    int image = 0;//表示显示哪一张图片的
    //int initPos1[24][2];
    int map1[27][11][11];

    //当前怪物id
    int monsteId = 0;
    /**
     * @brief 下一步x坐标
     */
    int nextX = 0;

    /**
     * @brief 下一步y坐标
     */
    int nextY = 0;
    //是否开始战中
    bool inBattle = false;

    /**
     * @brief 当前怪物副本
     */
    Monster monster;

    //左侧字体样式
    QFont font;



public slots:
    void startBattle();
    void endBattle();

protected:
    //void keyPressEvent(QKeyEvent *event) override;		    								//完成地图显示的功能

};

#endif // MYQGRAPHICS_H
